package com.web.actions.usuarios;

import com.ejemplo.bt.cuentas.services.CuentaServices;
import com.ejemplo.bt.cuentas.vo.Cuenta;
import com.web.actions.AbstractAction;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionErrors;

import com.ejemplo.bt.usuarios.services.UsuarioServices;
import com.ejemplo.bt.usuarios.vo.Usuario;
import java.util.List;

import org.apache.struts.action.ActionMessage;

/**
 * 
 * @author jorge
 *
 */
public class EliminarUsuarioAction extends AbstractAction {
  public ActionForward execute(ActionMapping actionMapping,
      ActionForm actionForm,
      HttpServletRequest request,
      HttpServletResponse response) {

    ActionErrors errors = new ActionErrors();

    try {

      long idUsuario =
          new Long((String)request.getParameter("idUsuario")).longValue();

      UsuarioServices services = new UsuarioServices();
      
      Usuario cli = services.obtenerUsuario(idUsuario);
      
      
      CuentaServices cs = new CuentaServices();
      List<Cuenta> listaCuentas = cs.obtenerCuentasUsuario(cli);
      for(int x=0; x<listaCuentas.size();x++){
           Cuenta cuenta = listaCuentas.get(x);
           if(cuenta.getSaldo()>0){
               errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("El saldo de cuentas del cliente contiene dinero"));
               return actionMapping.findForward("failure");
           }
      }
      services.eliminarUsuario(idUsuario);

      return actionMapping.findForward("success");
    }
    catch (Exception ex) {
      ex.printStackTrace();
      // Seteo los errores en el request.
      errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage("error.message",
          ex.getMessage()));
      saveErrors(request, errors);

      // Forwardeo.
      return actionMapping.findForward("failure");
    }
  }
}